Jump To:
Technical Q&As
Darwin is the open source UNIX-based foundation of Mac OS X. Darwin integrates a number of technologies. Among the most important are the Mach 3.0 microkernel operating-system services, based on 4.4BSD (Berkeley Software Distribution), the high-performance networking facilities, and the support for multiple integrated file systems. Darwin also includes a number of command-line tools. Mac OS X developers can use Darwin to port UNIX/Linux applications and to create kernel extensions.

Darwin Resources
A guided introduction and learning path for developers new to Darwin.   Essential information for developers working in the kernel environment.   Descriptions of application programming interface elements for Darwin and kernel-resident device drivers.
Document Descriptions
On Off
Display

Sorted by
Title
Sort by
Topic
Sort by
Date
Adding dependencies with kmodload (HTML)
QA1097: Illustrates how to specify dependencies when using kmodload.
Device Drivers, Kernel 2001-12-05
Are the Name Registry device tree nodes unique? (HTML)
Deprecated - HW64: Discusses whether Name Registry nodes copied from the Open Firmware device tree are unique.
Device Drivers 1999-10-11
Avoiding Kernel Event Conflicts (HTML)
QA1063: Documents the namespace for the vendor_code field of the kern_event_msg structure.
Kernel 2001-09-14
Can't attach during two-machine debugging with GDB (HTML) ()
Deprecated - QA1019: Describes a workaround for a problem attaching during two-machine debugging on Mac OS X 10.0.x.
Device Drivers, Kernel 2003-06-02
Checking for the Printer Driver (HTML)
DV42: Describes a legacy Mac OS technique avoiding system hangs when using serial drivers on USB systems.
Printing 2000-06-19
The "chosen" node in the device tree (HTML)
HW88: Describes how to find the "chosen" node in the Open firmware device tree.
Networking 2000-09-05
Common QA and Roadmap for USB Software Development on Mac OS X (HTML)
QA1370: Roadmap for development of USB Software on Mac OS X and some Common Questions and Answers
Device Drivers 2004-09-22
Determining Open Firmware configuration variables (HTML) ()
HW56: Discusses how to determine the Open Firmware variables on a system.
Device Drivers 1999-03-29
Determining user login/logout status (HTML)
QA1133: Tells how to determinine if a user is logged in, and how to get login/logout notification
Tools 2002-04-08
Developer Tools JBoss and Tomcat Do Not Start After Installing Java 1.4.2 Update (HTML)
QA1025: Describes how to re-enable JBoss and Tomcat after installing the Java 1.4.2 update.
Open Source 2004-03-04
Directories Appear as Volume Aliases (HTML)
QA1351: Discusses how VFS plug-ins should handle device numbers to ensure compatibility with Carbon applications.
File Management, Kernel 2004-05-25
Disabling a Processor on a Multiprocessor System (HTML) ()
QA1141: Describes how to disable a processor on a multiprocessor system for testing purposes.
Performance 2002-05-22
Discovering all advertised Rendezvous service types (HTML)
QA1337: Explains how to discover all Rendezvous service types being advertised on the local network.
Networking 2004-06-01
Documentation for getattrlist (HTML) ()
QA1327: The behaviour of getattrlist, and other Apple enhancements to the BSD file system programming interface.
File Management 2003-12-15
The dreaded "incompatible flag -framework" error (HTML)
QA1096: Explains how to eliminate the incompatible flag -framework error in Project Builder.
Device Drivers 2001-12-05
Enabling X11 Forwarding (HTML)
QA1383: Describes how to enable ssh clients to receive X11 communication from a Mac OS X system.
Open Source, Security 2004-10-25
Energy Star PCI Device (HTML) ()
QA1108: Provides useful information for developers of Energy Star-compliant PCI devices.
Kernel 2002-01-15
Expansion ROM device properties (HTML) ()
HW50: Describes the Open Firmware properties that should be included in a boot device's expansion ROM.
Device Drivers 1999-03-29
File Manager Text Encoding Hints (HTML) ()
QA1223: How to use Text Encoding Hints.
File Management 2003-01-20
Generating an NMI Without a Programmer's Switch (HTML) ()
QA1264: Explains how to generate a non-maskable interrupt (NMI) on CPUs without programmer's switches.
Device Drivers, Kernel 2004-04-26
Getting a Packet Trace (HTML) ()
QA1176: Lists tools available for looking at the network packets on the wire.
Networking 2004-07-13
Getting List of All Processes on Mac OS X (HTML) ()
QA1123: Describes how, using Carbon and BSD respectively, to list all applications and processes.
Kernel, Porting 2002-03-05
Installing an I/O Kit KEXT Without Rebooting (HTML)
QA1319: Describes the state of the art of installing I/O Kit kernel extensions (KEXTs) without requiring a restart.
Device Drivers, Kernel 2003-10-28
IODeviceTree & the IORegistry (HTML) ()
QA1120: Describes the IODeviceTree plane in the Mac OS X IORegistry.
Device Drivers 2002-02-13
IOKit Framework Headers (HTML) ()
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Device Drivers, Kernel, Networking, Open Source, Porting, Printing, Tools 2002-01-15
IOLog and Interrupt Context (HTML) ()
QA1100: Describes when IOKit runs at primary (hardware) interrupt context.
Device Drivers, Kernel 2002-02-13
Is the Open Firmware device tree object oriented? (HTML)
HW80: Discusses the object-oriented attributes of the Open Firmware device tree.
Device Drivers 1999-11-15
Issues with boot time KEXT loading (HTML) ()
QA1087: Explains how to solve problems with loading KEXTs at boot time.
Device Drivers, Kernel 2004-01-15
Mac OS X and root access (HTML)
QA1013: Describes how to enable root access in Mac OS X.
Device Drivers, Kernel, Security 2001-03-13
Mach Absolute Time Units (HTML)
QA1398: Describes how to convert Mach absolute time units to real time, and vice versa.
Process Management, Resource Management 2005-01-06
Making sense of IOKit error codes (HTML) ()
QA1075: Explains how to interpret I/O Kit error codes.
Device Drivers, Kernel 2002-02-07
Mapping kernel memory to user space on Mac OS X 10.2 (HTML) ()
QA1197: Describes a change to mapping kernel memory to user space affecting Mac OS X 10.2 and later.
Device Drivers, Kernel 2002-09-13
Open Firmware Memory bus speed (HTML)
HW97: Describes a method to display memory bus speed for G3 or G4 Macintosh in Open Firmware.
Device Drivers 2000-09-22
PCI/PCI-X slots on the Power Mac G5 (HTML)
QA1307: Discusses installing PCI/PCI-X cards of different speeds in the Power Mac G5.
Device Drivers 2003-09-30
Power Management; Policy Maker vs. Power Controller (HTML) ()
QA1121: Describes the differences between a Power Management Policy Maker and a Power Management Power Controller.
Device Drivers 2002-02-13
Preventing sleep (HTML)
QA1160: Explains how your application can prevent the system from sleeping.
Resource Management 2004-10-22
Programmatically causing restart, shutdown and/or logout (HTML) ()
QA1134: Describes how to programmatically cause restart, shutdown, sleep or logout.
Device Drivers 2003-02-10
Registering for sleep notifications (HTML)
QA1340: Explains how register for sleep notifcations on Mac OS X.
Resource Management 2004-10-25
Rendezvous enforces the TXT record format in Panther (HTML)
QA1306: Explains how mDNSResponder enforces the proper TXT record format in Panther.
Networking 2004-07-14
Retain Counts of io_object_t Objects in IOKit.framework (HTML) ()
QA1195: Distinguishes between the retain counts of an I/O Kit kernel object and its io_object_t user space proxy.
Device Drivers 2002-09-04
SCSIAction and IOSCSIUserClient on Mac OS X 10.2 (HTML) ()
QA1201: Describes migrating to a new API for SCSI Parallel devices starting with Mac OS X 10.2.
Printing 2002-09-13
Setting environment variables for user processes (HTML)
QA1067: Tells how to set environment variables for user processes.
Porting, Tools 2001-10-25
Signals and Threads (HTML) ()
QA1184: Describes how threads and signals interact.
Performance, Tools 2002-08-27
Sleep vs. Doze on Mac OS X (HTML)
QA1309: Discusses and demonstrates sleep versus doze detection on Machintosh Mac OS X
Device Drivers 2003-10-09
The state of mDNSResponder (HTML)
QA1339: Explains how to obtain information regarding the internal state of mDNSResponder.
Networking 2004-02-06
Static linking of user binaries on Mac OS X (HTML) ()
QA1118: Explains why static linking of user binaries is not supported on Mac OS X, and possible workarounds.
Open Source 2002-02-07
Suppressing the "unexpectedly quit" alert (HTML)
QA1288: Describes how to suppress the "unexpectedly quit" alert.
Security 2003-10-10
Text Encodings in VFS (HTML) ()
QA1173: How to handle text encodings correctly when writing a file system (VFS) plug-in for Mac OS X.
File Management 2003-02-10
Timely Issues - 1904 (HTML) ()
OPS23: Explains why the beginning of the year 1904 was chosen for epoch of the Time global variable.
Resource Management 1999-05-17
Updating the TXT record of a Rendezvous service (HTML)
QA1302: Explains how to update a Rendezvous TXT record while running on either Jaguar or Panther.
Networking 2004-07-14
Where is dlopen? (HTML) ()
QA1180: Describes how to dynamically link to libraries and plug-ins, typically done with dlopen.
Open Source, Tools 2002-08-19
Working with Configuration Variables (HTML) ()
QA1119: Explains how to delete a specific Open Firmware configuration variable without using Command-Option-P-R.
Device Drivers 2002-02-13
X11 FAQ (HTML) ()
QA1232: Frequently Asked Questions about using Apple's X Window System (X11) implementation.
Tools 2003-11-17